/*
 * Bloque.h
 *
 *  Created on: 25/09/2010
 *      Author: damian
 */

#ifndef BLOQUE_H_
#define BLOQUE_H_
#include <fstream>
#include "ManejadorArchivo.h"
#include "IUC.h"

class Bloque {

	char* memoria;
	int numeroBloque;
	int tamanioBloque;
	int espacioLibre;
	fstream* archivo;


public:

	// TODO preconds

	Bloque(int numeroBloque, int tamanioBloque, int espacioOcupado, fstream* archivo);

	Bloque(int numeroBloque, int tamanioBloque, char* mailSerializado, fstream* archivo);

	~Bloque();

	void actualizarEspacioLibre(int cambioTamanio);

	int getLongitudCorreo(int offset);

	bool almacenarMail(char* mailSerializado);

	char* obtenerMail(IUC* iuc);

	char* obtenerMail(int iuc);

	bool persistirBloque();

	int TransformUnsignedCharToInt(unsigned char* metadata, int cantidadChars);

    char* getMemoria();
    int getNumeroBloque();
    int getTamanioBloque();
    void setMemoria(char *memoria);
    void setNumeroBloque(int numeroBloque);
    void setTamanioBloque(int tamanioBloque);
    fstream *getArchivo();
    void setArchivo(fstream *archivo);
    int getEspacioLibre() const;
    void setEspacioLibre(int EspacioLibre);


};

#endif /* BLOQUE_H_ */
